package receiver;

import invoker.Ecouteur;
import invoker.IHMImpl;
import invoker.IIHM;
import invoker.Observateur;
import command.*;

public class Editeur {

	/**
	 * @param args
	 */
	

	ME me;
	IIHM ihm;
	
	public Editeur (ME me , IIHM ihm){
		this.me = me;
		this.ihm = ihm;
	}
	
	
	
	public static void main(String[] args) {
		Buffer b = new Buffer();
		PressePapier p = new PressePapier();
		Selection s = new Selection();
		
		//on crée le receiver qui est aussi le Suijet (Observable)
		 ME me = new MEImpl(b, p, s);
		
		//on crée l'invoker qui s'abonne au pres du Suijet
		IIHM ihm = new IHMImpl((Sujet) me);
		((Sujet)me).ajouterObservateur((Observateur) ihm);
		
		//on  crée les commandes
		Command copier = new Copier(me);
		Command coller = new Coller(me);
		Command couper = new Couper(me);
		Command saisir = new SaisirTexte(me,ihm);
		Command selectionner = new Selectionner(me, ihm);
		Command effacer = new EffacerTexte(me);
		//on ajoute les commandes a l'invoker, les code correspondent aux nom des menus
		ihm.addCommand("Copier", copier);
		ihm.addCommand("Coller", coller);
		ihm.addCommand("Couper", couper);
		ihm.addCommand("Saisir", saisir);
		ihm.addCommand("Selectionner", selectionner);
		ihm.addCommand("Effacer", effacer);
		
		//en fin on lance l'editeur
		new Editeur(me, ihm);
		
		
	}

}
